/*
 * @Author: Vorga
 * @LastEditors: Vorga
 */
#ifndef LINK_ARRAY_B_H
#define LINK_ARRAY_B_H

#include <stdio.h>
#include <stdbool.h>

#include "node.h"

typedef int (*CMP)(const void*,const void*);
typedef void (*FUNC)(const void*);

void add_head_llb(Node *head,void *data);

void add_tail_llb(Node *head,void *data);

void traversal_llb(Node* head,FUNC show);

void _del_n_llb(Node *node);

bool del_head_llb(Node* head);

bool del_tail_llb(Node* head);

bool del_index_llb(Node* head,size_t index);

bool del_val_llb(Node* head,void *val,CMP cmp);

bool insert_llb(Node *head,size_t index,void* data);

void* query_val_llb(Node *head,void *key,CMP cmp);

void* query_index_llb(Node* head,size_t index);

bool mod_index_llb(Node *head,size_t index,void* key);

bool mod_val_llb(Node *head,void* old_data,void* new_data,CMP cmp);

void sort_llb(Node *head,CMP cmp);

size_t size_llb(Node *head);

void destory_list_b(Node *head);

#endif // LINK_ARRAY_B_H
